// 修饰符：类中的成员的修饰符：主要是描述类中的成员（属性，构造函数，方法）的可访问性
// public private protected
// 如果使用private来进行修饰，子类与外部成员都是无法来访问属性的！
(() => {
    // 定义一个类
    class Person {
        // public name: string
        // private name: string
        protected name: string
        public constructor(name: string) {
            this.name = name
        }

        // 方法
        public eat() {
            console.log('这个东西真的好吃!', this.name);
        }
    }

    // 定义一个子类
    class Student extends Person {
        constructor(name: string) {
            super(name)
        }
        play() {
            console.log('我喜欢玩游戏', this.name);

        }
    }

    // 实例化对象
    const p = new Person('大蛇丸')
    // console.log(p.name);
    p.eat()

    const stu = new Student('小红')
    stu.play()
    console.log(stu.name);


})()